package com.cdel.akka.AkkainJAVA.demo5router;

import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
import akka.routing.RoundRobinPool;

//这种方式是通过在AKKA的配置中来定义Router,创建的时候直接读取配置来获取Router.
public class AkkaMain5 {
	public static void main(String[] args) throws Exception {
		ActorSystem _system = ActorSystem.create("CustomRouterExample");
		//这个就是在配置中指定了一个router,策略是轮询,子Actor数是5个.
		//然后通过FromConfig()配置加载Router.加载的时候需要指定router的名字.这个名字需要和配置中的Router的路径相对应.
		ActorRef router = _system.actorOf(Props.create(WriterActor.class).withRouter(new RoundRobinPool(4)));

        /**
         * 在这里模拟发出10个消息，使用RoundRobinRoutingLogic的router会轮询调度每个actor接收消息
         * 也就是说每次tell，router只会选择其中一个actor进行消息的响应
         */
        for (int i = 1; i <= 10; i++) {
            //sends series of messages in a round robin way to all the actors
        	router.tell("are you ready?" + String.valueOf(i), ActorRef.noSender());
        }

        Thread.sleep(2000);
        //_system.shutdown();
	}

}